#ifndef IMPPMSWNOTEBOOK_H_
#define IMPPMSWNOTEBOOK_H_

#ifdef __WXMSW__

#include <wx/notebook.h>

// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"

#ifdef __BORLANDC__
    #pragma hdrstop
#endif


#include "wx/notebook.h"

#ifndef WX_PRECOMP
    #include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly"
    #include "wx/string.h"
    #include "wx/dc.h"
    #include "wx/log.h"
    #include "wx/event.h"
    #include "wx/app.h"
    #include "wx/dcclient.h"
    #include "wx/dcmemory.h"
    #include "wx/control.h"
#endif  // WX_PRECOMP

#include "wx/imaglist.h"
#include "wx/sysopt.h"

#include "wx/msw/private.h"

#include <windowsx.h>
#include "wx/msw/winundef.h"

#if wxUSE_UXTHEME
    #include "wx/msw/uxtheme.h"
#endif

namespace Impp
{

class ImppMswNotebook: public wxNotebook
{
private:
	int tabCloseButtonHover;
	bool ignoreMouseLeftEvents;
	
public:
	ImppMswNotebook(wxWindow *parent,
             wxWindowID id,
             const wxPoint& pos = wxDefaultPosition,
             const wxSize& size = wxDefaultSize,
             long style = 0,
             const wxString& name = wxNotebookNameStr);
      // Create() function
    //bool Create(wxWindow *parent,
    //          wxWindowID id,
    //          const wxPoint& pos = wxDefaultPosition,
    //          const wxSize& size = wxDefaultSize,
     //         long style = 0,
     //         const wxString& name = wxNotebookNameStr);
	virtual ~ImppMswNotebook();
	bool InsertPage(size_t nPage,
	                            wxNotebookPage *pPage,
	                            const wxString& strText,
	                            bool bSelect,
	                            int imageId);
	WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
	void OnPaint(wxPaintEvent& event);
	void OnMouse(wxMouseEvent & event);
private:
	DECLARE_EVENT_TABLE()
};

}
#endif

#endif /*IMPPMSWNOTEBOOK_H_*/
